package logica_de_presentacion;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import comun.Serie;
import logica_de_negocio.FaltanDatosEnLaBaseDeDatos;
import logica_de_negocio.gestorCapitulo;
import logica_de_negocio.gestorSerie;

public class FormularioSelecionCapituloPorNombre extends JInternalFrame
		implements ActionListener {

	/**
	 * Buscar un capitulo por nombre de la serie
	 */
	private static final long serialVersionUID = 1L;
	protected JComboBox<String> campo;
	protected JButton selecion, cancelar;
	protected String[][] lista;
	private MenuInicial clasePadre;

	public FormularioSelecionCapituloPorNombre(MenuInicial clasePadre)
			throws ClassNotFoundException {

		super("Buscar Capitulo por nombre de la serie", true, true, true, true);
		this.setVisible(true);
		this.getContentPane().setLayout(new BorderLayout());
		this.clasePadre = clasePadre;

		JPanel pBotones = new JPanel();

		// selecion
		ImageIcon imagenselecion = createImageIcon("/logica_de_presentacion/imagenes/selecion.gif");
		selecion = new JButton("Selecion", imagenselecion);
		selecion.addActionListener(this);
		pBotones.add(selecion);

		// CANCELAR
		ImageIcon imagenCancelar = createImageIcon("/logica_de_presentacion/imagenes/CANCELAR.gif");
		cancelar = new JButton("Cancelar", imagenCancelar);
		cancelar.addActionListener(this);
		pBotones.add(cancelar, "South");

		// BOTONES
		gestorSerie gs = new gestorSerie();
		gs.cargarDatos();

		this.getContentPane().add(pBotones, BorderLayout.SOUTH);
		campo = new JComboBox<String>(lista());

		this.getContentPane().add(campo, BorderLayout.CENTER);
		JLabel jl = new JLabel("Por titulo de la serie");
		this.getContentPane().add(jl, BorderLayout.NORTH);
		this.pack();

	}

	@Override
	public void actionPerformed(ActionEvent e) {

		JButton BotonPulsado = (JButton) e.getSource();

		if (BotonPulsado == cancelar) {
			this.dispose();
		}
		if (BotonPulsado == selecion) {
			FormularioBorrarCapitulo formularioBorrarCapitulo;
			try {
				formularioBorrarCapitulo = new FormularioBorrarCapitulo(
						elegido());
				formularioBorrarCapitulo.cargarCapitulo();
				clasePadre.getContentPane().add(formularioBorrarCapitulo);
				try {
					formularioBorrarCapitulo.setSelected(true);
				} catch (PropertyVetoException e1) {
				}

				formularioBorrarCapitulo.setVisible(true);
				formularioBorrarCapitulo.toFront();
			} catch (FaltanDatosEnLaBaseDeDatos e2) {
				JOptionPane.showMessageDialog(new Frame(), e2.getFalta());
			} catch (ClassNotFoundException e2) {
				JOptionPane.showMessageDialog(new Frame(),
						"No hay informacion en la base de datos");
				this.dispose();
			}
		} else {
			JOptionPane.showMessageDialog(new Frame(), "NO se ha borrado");
		}
		this.dispose();

	}

	private int elegido() throws FaltanDatosEnLaBaseDeDatos,
			ClassNotFoundException {

		gestorSerie gs = new gestorSerie();
		gestorCapitulo gc = new gestorCapitulo();
		Serie s = gs.getSerie((String) campo.getSelectedItem());

		if (gc.isId_s(s.getId_s()) == false) {
			FaltanDatosEnLaBaseDeDatos f = new FaltanDatosEnLaBaseDeDatos();
			f.setFalta("No hay capitulos para esta serie");
			throw f;
		}
		return s.getId_s();
	}

	private String[] lista() throws ClassNotFoundException {

		String[] a;

		gestorSerie gs = new gestorSerie();

		lista = gs.getTitulo();
		a = new String[lista.length];
		for (int i = 0; i < lista.length; i++) {// NOS DA EL NUMERO DE FILAS
			a[i] = (String) lista[i][1];
		}
		return a;
	}

	/** Returns an ImageIcon, or null if the path was invalid. */
	protected static ImageIcon createImageIcon(String path) // ICONO
	{
		java.net.URL imgURL = Button.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find file: " + path);
			return null;
		}
	}
}